package com.atguigu.lease.common.exception;

import com.atguigu.lease.common.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author Marco
 * @Description
 * @date 2025/7/27 17:01
 * @email 3293336923@qq.com
 */
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {

    @ResponseBody
    @ExceptionHandler(Exception.class)
    public Result handle(Exception e) {
        e.printStackTrace();
        return Result.fail();
    }


    @ResponseBody
    @ExceptionHandler(LeaseException.class)
    public Result handle(LeaseException e) {
        e.printStackTrace();
        log.info("e:{}", e);
        return Result.fail(e.getCode(), e.getMessage());
    }
}
// @ControllerAdvice :  这个注解可其实就是一个 @Controller 的增强器
//   可以为  @Controller 层 添加统一的处理 和操作
//@ResponseBody : 将方法的返回值  作为响应体返回给前端
//   这里的加了 @ExceptionHandler注解的方法返回值
//   作为 @Controller 层发生异常时，返回给前端的 响应提示信息
// @ExceptionHandler(Exception.class) 表示
// 可以处理 @Controller层发生异常类型的范围
//    如果匹配上，就执行处理异常的逻辑方法
//     如果没有匹配上，就不执行
// TODO  在这个类中可以写多个 处理异常的 方法
